package com.example.demo.service;

import com.example.demo.entity.Book;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

import java.util.List;
import java.util.Optional;

/**
 * 图书服务接口
 * @author Logan.Li
 */
public interface BookService {
    
    /**
     * 保存图书
     */
    Book saveBook(Book book);
    
    /**
     * 根据ID查询图书
     */
    Optional<Book> findById(Long id);
    
    /**
     * 查询所有图书
     */
    List<Book> findAll();
    
    /**
     * 分页查询图书
     */
    Page<Book> findAll(Pageable pageable);
    
    /**
     * 根据标题模糊查询
     */
    List<Book> findByTitle(String title);
    
    /**
     * 根据作者查询
     */
    List<Book> findByAuthor(String author);
    
    /**
     * 根据分类查询
     */
    List<Book> findByCategory(String category);
    
    /**
     * 根据ISBN查询
     */
    Book findByIsbn(String isbn);
    
    /**
     * 删除图书
     */
    void deleteById(Long id);
}
